{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## TM test of first order and for complex media\n",
    "In the TE polarization, we have demonstrated that quadrant sorting works. However, in the TM polarization, a naive quadrant sort seems to be ineffective, specifically when any of the $\\epsilon <0$.\n",
    "\n",
    "However, since we know what the correct answer should look like, it appears that the correct sorting procedure is simple.\n",
    "1. Any real k MUST BE OF ONE SIGN ONLY (POSITIVE)\n",
    "2. pure imaginaries must be of ONE SIGN ONLY (POSITIVE)\n",
    "3. nonzero real and nonzero imaginary k must come in complex conjugate pairs (so in $k^2$ space, they correspond to two separate eigenvalues)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "## same as the analytic case but with the fft\n",
    "import numpy as np\n",
    "import sys\n",
    "sys.path.append('/Users/nathanzhao/src/Rigorous-Coupled-Wave-Analysis')\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from numpy.linalg import cond\n",
    "import cmath;\n",
    "from scipy.fftpack import fft, fftfreq, fftshift, rfft\n",
    "from scipy import linalg as LA\n",
    "from numpy.linalg import solve as bslash\n",
    "from RCWA_1D_functions.grating_fft.grating_conv import *\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def nonHermitianEigenSorter(eigenvalues):\n",
    "    N = len(eigenvalues);\n",
    "    sorted_indices=[];\n",
    "    sorted_eigs = [];\n",
    "    for i in range(N):\n",
    "        eig = eigenvalues[i];\n",
    "        if(np.real(eig)>0 and np.imag(eig) == 0):\n",
    "            sorted_indices.append(i); sorted_eigs.append(eig);\n",
    "        elif(np.real(eig)==0 and np.imag(eig) > 0): \n",
    "            sorted_indices.append(i); sorted_eigs.append(eig);\n",
    "        elif(np.real(eig)>0 and abs(np.imag(eig)) > 0): \n",
    "            sorted_indices.append(i); sorted_eigs.append(eig);\n",
    "    return sorted_eigs, sorted_indices;\n",
    "\n",
    "def eigenMatcher():\n",
    "    return;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/nathanzhao/anaconda3/lib/python3.7/site-packages/numpy/core/numeric.py:538: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  return array(a, dtype, copy=False, order=order)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD5CAYAAAA6JL6mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd3xb1dnHv0fb8t5xpkM2IWQvEjYUQikrjKaMBggpbaGUTijlhb4tHW9py2gLhLAKZba07BVWINsJ2Xs6ThzH8ZQtW/O8fxxJnrJlW5Z15fv9fPJRIl3dexyf+9zfec4zhJQSHR0dHR3tYujrAejo6Ojo9AzdkOvo6OhoHN2Q6+jo6Ggc3ZDr6OjoaBzdkOvo6OhoHN2Q6+jo6GgcU6QHCiGeBi4GjkspT2n12U+APwK5UsoTnZ0rJydHFhYWdnGoOjo6Ov2b9evXn5BS5rZ+P2JDDjwL/BX4R/M3hRBDgPOB4khPVFhYSFFRURcuraOjo6MjhDjU3vsRu1aklMuBynY++gvwM0DPLNLR0dHpA3rkIxdCXAIckVJuitJ4dHR0dHS6SFdcKy0QQtiBe4CvRXj8YmAxwNChQ7t7WR0dHR2dVnTbkAMjgOHAJiEEwGBggxBihpTyWOuDpZRLgCUA06ZN090wOjr9DI/HQ0lJCY2NjX09lLjHZrMxePBgzGZzRMd325BLKbcAecF/CyEOAtMiiVrR0dHpf5SUlJCamkphYSEB8afTDlJKKioqKCkpYfjw4RF9J2IfuRDiJWAVMEYIUSKEuLmb49TR0emHNDY2kp2drRvxThBCkJ2d3aWVS8SKXEq5oJPPCyO+qo6OTr9EN+KR0dX/p4TJ7HR5fby4ppg9ZY6YX3v1/gre3HQUvbZ74iKl5I2NR1izvyLm1951zMFLa4txeX0xv7aONujJZmdc8dhn+3ho2R5yUix8+fNzsJmNMbnuwRP1fHPJ6tC/L5k4MCbX1Ykt72wp5Y6XNwKw7EdnMjIvJSbXdbq9fOvJ1VTUuzlc6eRnF46NyXUTlUceeYTHHnuMSZMmUV5ezokTJ7j77rspLS1l8eLF2O32vh5it0gIRe7zS15aW4zZKDhR5+btzaUxu/Zzqw5iNAisJgP/2VASs+vqxJbXNxzBajJgEPBa0eGYXffdLceoqHeTaTfzalGJvurrIX//+9959913ueOOO/B4PGzcuJFrrrmGhx56CKfT2dfD6zYJYcj3lddRVuvid1ecyuDMJD7Y1ib6sdf4dOdxzh6TyzXTh7DmQCVurz9m105Idn8Az10CL14Dh9f19WgAaPT4+GJPOdfNGsbZY/J4e3Np9AyqlFD0DDx9Ibx2I1QeaPHxe1tKGZKVxM8uHMuJOhf7T9RH57r9kFtvvZX9+/dz0UUXMWfOHDZu3MikSZN4+OGHOXr0KGeffTZnn312Xw+zWySEa2Xj4WoAJg3JYO7IHN7ZUorX58dk7N3nVGlNAwcrnFw3axiDMpL4x6pDbC+tZdKQjF69bsKy/U149QbIHAaeRnjmQrju33DSWX06rD1ldXh8kqnDMhmaZefjnccpqWpgSFYUluHL7oMVD0PeeCjbBodWwC2fQvog/H5J0aEqLhw/gOmFmQCsP1jFiNzYuHV6k1+9tY3tR2ujes6TB6Zx3zfGh/388ccf5/333+eLL75g69atPPjgg7z99tsA/OUvf+HTTz8lJycnqmOKFQmhyDeXVJNqNXFSTjKzR2TjaPSyKwabnmv2q9Izs07KZmxBGkCfbLYmBI018NYPYOBk+N5q+P5qyB4Fr34bHGV9OrTtpTUAnFyQxsyTsgBYc6C9skNdPfGbyohPuwm+uwJu/hBcDnjvZwDsLa+jpsHDtMJMRuSmkGo1se1oTc+vq5NwJIQi33e8npH5KRgMglMHKzW87Ugt4wem9+p11x6sJNVmYlxBGlJKLCYDe4/X9eo1E5a1S6ChCq7/L5iT1J9rnofHToMP74H5S/tsaDtKHdgtRoYGFHiK1cTmkmqunDq4+yd118O7P4EBp8KFfwAhIG8cnP4j+OQ3cGwL6w4pcTC9MAshBIU5yRyo0K4ftzkdKWedrpMQiry40klhdjIAw7LspFhNbDnSNeWyr7yOkqqu3SQ7S2s5uSANo0FgMho4KSeZPboh7zo+D6x+HEZdAAMnNb2fMwpO+wFseQ2Obemz4R2qqKcwOxmDQWAwCMYVpLKti26BI9UN7G6+Wlv9GNSVwUUPgsnS9P70RWC2w+rH2HS4mky7mWHZ6gEyPCeZAyf0+dUbpKam4nBodzWteUPe6PFxtKYhpJYMBsH4gWldMuSvFR3mvD9/zjl/+jzkb+8Mv1+y65iDsQNSQ+8Nz0nmUIW+GdVl9n0KzhMwdWHbz067Hazp8PkfYj6sIIerGhiSlRT69/iB6eworcXnj2zDc/2hSs7902d87S/LVcRLYy2seARGz4OhM1senJQJp14N2/7DwdJyxhWkhZJDhuckU1LVoMeT9wKLFy9m3rx5mt3s1LwhL6lyIiUU5jRtPE0YpG40r6/zCJKaBg+/fns7Ewalk2W38Mv/bokoIuFIdQP1bl/INw4wMCOJ0ppGPUSsq2x5VRmwkee1/SwpA2bdCjvegvLdvTeG4zvg/V/Aawvhy79Ag3qgSykpqXIyJLNpfp08MA2n28fBCB7aUkrue3Mb2clWJgxK59dvb6dx/YvgqoEzftr+l06ZDx4nA46vYEwzoTAs246UUFLV0KMftT9z8OBBcnJyOOuss0IbnQC33347O3fu5NNPP+3D0XUfzRvyI9WqHsGgjJY3msvrj+hGe2vTUWobvfz60lO4/dyRbD1Sy4biqk6/t6NULa2b32gF6Tacbh81DZ6u/hj9F78P9nwEYy5q6WJozvRbwGiBdb3kJ1/5qPLFFz0FRzbAsvvh0alQvIYTdW4aPf4WESonBx7ekbhXig5VsfVILbefM5L/vXQ8tY0eXCufUJu6g6e2/6Whp+FLyuZcVrdY8RWkq1VBWY1ePVCnJZo35Mdr1aTOT7OG3hs7QN1oO0o793m9uekoY/JTOXVwOpdOGoTFaOD9rZ3Hoe86ps49Jr/pRhuUoW60I9W6YoqY0o3QWA0ndbCkTcmF8ZfDxhdVVEc0WfV3+PCXMPZi+NEO+OFm+M5ysKXB85dTuU+1JAz+bgFG5adgNAh2HevckL+16ShWk4GLJw5k0pAM5mcdJL1+v3o4hcNo4ljeGZxu2MyY/KZQw4J0GwCluiHXaYX2DbnDBUBeqi303oi8ZEwGEVLN4Wj0+NhYXM1ZY3IRQpBiNTFrRDbLdhzv9Lo7jzkYmmUn2doU+DMwcLMfrdZvtIjZF1jKnnRWx8fNWAxuB2x6ObrX/uBuGHcJXPUs2FVoIQUT4cb3ICmDYR/cRAYO8poJBavJyIjcZHZGIBQ+3XWc00flkmI1IYTgFtvHVMkUHCO/0eH3tlonkSXqGNOsReOAgCE/VqvPL52WaN6QlztcpFpNJFmaaqtYTUZG5qWw81jHN9pXxdW4fX5mDM8KvXfeuDwOnKhnf3nH0QE7j9W2WPZCsxutRlfkEbP/M8ifoFR3RwyeBgOnwNonVTZkT2mogv9+D3JGw+VPgKFVbZ7UAfDNF7E0nuB+83PkplpbfDx2QFqn8+twpZPDlQ3MHZmt3qg9ypiqz3nVdyYrDnXs9vvMo2qqJB3+MvSezWwkw27mmK7IdVqheUN+3NFIbpq1zftjB6SysxNFvvZAJULAtMImQz53pMrsWr0/fMJHo8fHgRP1bQx5VrLy8VbUuyMef7/G64LDa+CkMyM7fsYtcGIXHPyy82M745MHoO4YXLEELGEyNAdOYu2Qm7jMuJKco5+1+GjMgFSOVDdQ2xh+P2TVPlUp8bTAnGL9cyD9/Nd4AV/s6bj/ypoTNo6ZB8PBFS3eH5Bm010rOm3QviGvdZGX2o4hL0jjaE0jNc7wN9qaAxWMG5BGelJTO6XhOcnkpFhYdzC8Id97vA6/pEXECoDZaCDDbqaiTjfkEVG2FXxuGDIjsuPHX66iW3q66Vm2HYqeVhmVAyd3eOj7WddygIGYl92r4t0DjCtQD/FdHajylftOkJNiZVReivru+mcRI88jZ+hY1h8Kv6He6PFx8EQ9FRkT4cj6FiuQnBQrFfWuSH9SnX6C9g25w9XCPx4kqJZ3htmQcnv9bCiuCqVcBxFCML0wq0ND3l7ESpDsZIt+o0XKkQ3qdVCY6I3WmJNg0rWw822o7WaFSymVX9yaCmff0+nhZXU+libdDBV7YN1TofeDG+rh3CtSSlbuq2D2iEBHnB1vqRXAjFuYNiyLXWWOsNFNe8qUUGDQFKg/DjVNVTWzki1U6iu+PufZZ5/ltttu6/SYo0ePhv69aNEitm/f3ivj6Uqrt6eFEMeFEFubvfdHIcROIcRmIcR/hBAxrRYlpeS4o7FdRT6uIBi50r4h33KkhkaPn5nDs9p8Nr0wi5KqBkrD+Lp3HnNgMxtC2aTNyU6xckJX5JFxZD2k5EPaoMi/M+0m8Hthwz+6d83d7yu//Fl3N21udsCJOhf7M+aoqJrPfgdO9YAvSLeRZjOFdd8drmzguMPVtP+ybilkDIOR5zG9MBMpCRvmGhQfGSNnqTeOrA99lpVsoVKfX5qgtSFfunQpJ598cq9cqyuK/FngwlbvfQScIqU8FdgN3B2lcUWEw+Wl0eNvsxEFkJdqJdNuDquY1hxQ/svphe0bclA+9PbYUVrLmPxUjIa27ZhyUixU1OmKPCKOrFdqvCttrbJHwIhzYf0zLVwdEeHzwkf3QfZImB5Zy9lyh4vcNBtc8AC4amH5g4BauXW04Vl0SM2dacMy4dhWVdVw+iIwGJk0NAOjQbD+YDhDroTCgNHTVPx8M0OenWzB4fLq2Z094LLLLmPq1KmMHz+eJUuWAJCSksI999zDxIkTmTVrFmVlqlDbW2+9xcyZM5k8eTLnnXde6P0gDoeD4cOH4/GouVhbW0thYSGvvfYaRUVFXHvttUyaNImGhgbOOussiopUOOv777/PlClTmDhxIueee26Pf6au9OxcLoQobPXeh83+uRq4sscj6gJBX3R7hlwIwbiCNHaEudHWHqhkVF4K2SntqflUki1Gig5WcemklmpRSsmO0louGD+g3fNmJ1upqI99OzDN0VgDJ3ardPSuMn0RvLwAdr0HJ18S+fc2vag2S69+Hozmzo8HTtS5yUmxQv7Jyq2zdgnMWARZJzG2IJXXNxxBStmmx2LRoSpSrSZG56fC20+AKQkmXweA3WLi5IK0kLFvza5jDkbnp2K02GDAhJaKPEVtqFfVexiQHpsuWL3Ce3dFv37OgAkw7/edHvb000+TlZVFQ0MD06dPZ/78+dTX1zNr1iweeOABfvazn/Hkk0/yy1/+krlz57J69WqEECxdupT/+7//409/+lPoXKmpqZx11lm88847XHbZZbz88svMnz+fq666ir/97W88+OCDTJs2rcX1y8vLueWWW1i+fDnDhw+nsrLnlTSj6SO/CXgv3IdCiMVCiCIhRFF5eXlULljlVIY8095+RuDYAWnsPuZoUxPD55cUHaxqEXbYHJPRwJRhme36yY87XFQ5PW0iVoJkp1iodnoiKg/QrzkW8NAVTOr4uPYYfQGkD+napqfbCZ/+FgZPh3Edx3AHaXD7qHN5m4TCOb9UD4BlvwLU/KpzedtNmV9/sIrJwzIxNlbB5tfUA6uZK2daYSYbD1e324ikRWhrwUT1fxXY8MwORUbpq77u8sgjj4SU9+HDh9mzZw8Wi4WLL74YgKlTp3Lw4EEASkpKuOCCC5gwYQJ//OMf2bZtW5vzLVq0iGeeeQaAZ555hhtvvLHD669evZozzjiD4cOHA5CV1bmLrzOiUsZWCHEP4AX+Ge4YKeUSYAnAtGnTolKMJBiRkm5vX12NLUilweOjuNLJ8Jwmf/b2o7XUubxhDTnAtGFZPPTxbmoaPC2iWrYHfKLjWkWsBAkq/Eqnu91NWJ0AxwObPnnd8BkajKrA1ie/VkZuwCmdf2fN4+AohSufjtiVEzSWWcmB33/qAJhzh/KVH17L2IJRgHKFNE/hr2nwsPu4g6+fWqBcQN4GFTrZjBmFWTyz4iBbj9YwZWhm6P1yh4sTde7QZip5J4Praag9AumDyUoOzC+tb3hGoJx7g88++4xly5axatUq7HY7Z511Fo2NjZjN5tCqymg04vV6AVWD5Uc/+hGXXHIJn332Gffff3+bc86ZM4eDBw/y+eef4/P5OOWUjudjeyu4ntJjRS6E+DZwMXCtjHG1qM4U+bhgZEGrDamgf3zm8Oyw5w63IRXM5gvdaK3ICSomfUOqY45vB1s6pHWzWfW0m8CaBp9HYBDqjsOXD6lqg8NOi/gSwaiSjObz67TbIWUAfHAPowMNmFun6m8orkJKmDHQAiv/CiPPV8v+Zkwf3v4+TLBxxNhAeCP5gbrdZerBF8xV0Lwh7yNqamrIzMzEbrezc+dOVq9e3enxgwYp9+pzzz0X9rgbbriBBQsWtFDj4Urjzp49m88//5wDB1Rbvz53rQghLgR+DlwipYx5xfvqgCLPSGpfkY/KT8Eg2kaurDlQydAseygTsz2CG1JFrdwrmw5XMyQrKewqIKjIdUPeCWXbldrsrjKxZ8Gs76mwvtLNHR/74S/B44Tz/7dLl6hpb35ZkuGce6BkLSn73mZolr1NTZ+ig5UYDYIpZa9CQyWc+fM2585JsTIiN7mNId9QXI1BwMRAgxTyxqnXwAomWxcKPeLCCy/E6/Vy6qmncu+99zJr1qwOj7///vu56qqrOP300ztsA3fttddSVVXFggULQu8tXLiQW2+9NbTZGSQ3N5clS5ZwxRVXMHHiRK655poe/1wRu1aEEC8BZwE5QogS4D5UlIoV+CiwVFgtpby1x6OKkGqnGyEgLYwht5mNDM9JblGlzuvzs3pfBRdPLOjw3HaLiVMGprHuQJMil1JSdKiSM0aFTyfPCBj46gb9RguLlKps7IQe7o3P+i6seQw++AV8+632Hwr7PoXNr8AZP4Pc0V06fXV7ihzUpueaJ+C9u5hV8DhfFFe1WC6v2V/JmfluLCv+AqMvhCHT2z3/jOHZvL35KD6/DEVAfVVcxZgBaU01fJIyIXVgyJCnJ5kxGoSuyLuJ1WrlvffabuXV1TWV5Ljyyiu58ko1Ny+99FIuvfTSNscvXLiQhQsXhv795ZdfcuWVV5KR0RSBPX/+fObPnx/692effRb6+7x585g3b15PfpQWRKzIpZQLpJQFUkqzlHKwlPIpKeVIKeUQKeWkwJ+YGXGAKqeHNJu53TDAIDOGZ7H2QGVo83FTSTUOl5e5Izup7YHqxfnV4SocgTTsQxVOTtS5W6T0tyboT9dL2XZA7RFVjzu/hzG1SRlw3q/g4BewoZ1lr+MY/Oc7Ktzw9B93+fTBFV96a6FgMMJlfwdnBd+ve5RjNU4OBVqw1Tg9bCiu5Bc8BdIHF4Z3/cwcnoWj0Rtyp/j9ko3F1UwZ2iodI//kkCE3GASZdrNeBiKOuP3227nrrru49957+2wMms7srG7wkBnGxRFkzsgcHC4vm0rUzbJ89wmEgDkjw/vHg5w7Lh+PT7J8t6qLsTbgZplWmBn2O7ohj4DjO9RrdzY6WzN1IQw/E977ORxa2fR+QxW8tECVvb36H2Du+sZzcFWV0d4cK5gI593PsLKP+R/T86zepyKxvtxTzh3GfzGyajmccy9kDQ97/tNH5WAQ8OE2FZu8vbQWh8vbdn7ljVNNNXxqAy4tydxhjRed2PLoo4+yd+9eRo/u2oovmmjbkDvdbZe9rThtRA5CwBd7ypFS8u6WUqYOzez0ewBThmaQaTfz0XZVn/yj7WUMSLMxMjcl7HdsZiMWk0E35B1xItDpJ3dsz88lBFz5DKQPhn9cCh/cozr8PDZX1XK58ummDcMuUuP0YDUZsJnDxGvP/j5y5ne50fQBUz69AdY+ydCPFnGH6T/4T10As7/f4fmzU6zMHJ7Ne1tVuYGPtpdhELR13eWOBZ8LaooBSLOZqdXo/NK7Z0VGV/+fNG7IPe2rpWZkJVuYXpjFvzeUsPZAJXuO13HZ5MhSwk1GAxeeUsB7W4+x65iDz3eXM2/CAAwduHJAqXKt3mgxoWIv2DIiSpGPiORsuPkjFR+++jHV4SclFxa+C2O674fsdH4Jgbjwd7w99KekNxTDuz9hmOMrPiq4FcNlf49oI/eiUwvYV17Pmv0VvP5VCdMLs9omqWWNUK8V+wDtzi+bzUZFRYVuzDtBSklFRQU2W+SryKjEkfcVVU43I/PCq+MgN55WyHf/uYEFT64mL9XK5REacoCb5xbyyrpi5j28HIMQ3DC7sNPvpCeZdUXeERV7ld86mtizlPq++CFVUTE5fIRBpNQ0eMhI6mTlJgRjL76D0x+aRLaspMaQwZuXnwOGyDTS/CmDeHjZbhY+s44Gj49ffr0dd1Pw/6piL4w6n7QksyabfA8ePJiSkhKilRCYyNhsNgYPHhzx8Zo25NVOT9uNqHa48JQBfOfMk1i2vYz7LxnfoqtPZ4zMS+X380/l75/u5aa5w1skFoVDN+SdULEPCk/vnXPb2o/v7w7VDe6wYabNGZmXyv9cMoEnv9jPvWeOiEhcBLFbTPz56knc/9Y2zhiVy9dOzm97UHIOWNOVIQfSk0zUNnojvka8YDabQ9mMOtFFs4bc6/NT5/J26loBVXfl7nnjuHveuG5d6+ppQ7h62pCIj09PMnPcoRf/bxe3U0WtRFuR9wLVTk+LjM2OuG7WMK6bNaxb1zljdC6f/Pis8AcIoYqFBVwrQR95b2QI6mgTzfrIHQFFkmaLrPhRLNEVeQdU7lev2SP6dhwRoFwrcTK/skc2GfIkM16/xOnWKyDqKDRryOtcypCn2OJvUZGeZO6wM1G/JuAe0Ioij8R1FxOyR0LNYfA0hMakhyDqBNGsIQ9O4rQ4NORpSWYcLi9+v74734agIc86qW/H0Qken58Gjy+ODPkIQELlgdAqVF/16QTRrCEPulZS49C1kmYzIWXTGHWaUbEPUgvAGvmGYF9Q1xhnK76gK6pib5Mib9Dnl44iAQx5nNxozdCzOzugN0IPe4GQ664LEU69SiiWfA9pSWpM+vzSCaJZQ17nUpM4bm60Zug+zA6oOgiZhX09ik4J/u7iZsVnSwN7DlQdCrlWtJgUpNM7aNaQx7NrJfhwCao6nQBup+oKn9m9ML1YUhePK77MYVB9SF/x6bQhAQx5HN1oAYJ+1TrdR96SalUrhIzCPh1GJMSdawUgYxhUHQrNeX3FpxNE04bcYuygoFEfoivyMIQM+dC+HUcExKVQyBgKNSWYhCTJbNSFgk4IDRtyT/xEFLQiOC6HbshbUn1IvWrAteKIxzyFzGHg94CjlBSbiXq3Pr90FBEbciHE00KI40KIrc3eyxJCfCSE2BN4DV+oO8o4Gr3xpZaakWpVPkxdMbWi6iCYbJDSTj2ROCPkI7fG0R5MRuABWHWIFKtJD2/VCdEVRf4scGGr9+4CPpZSjgI+Dvw7JtS54teQ28wGjAYRiqzRCVBdDOlDut+nM4Y4Gj2YDAKbOY4WrUFDXl1MitVEvb7i0wnQlVZvy4HW7Z4vBYI9tp4DLovSuDrF0eiJL7XUDCFE4EbTa2G0oPqQJtwqoIRCis0UX0WpMoYAAqqVItf3YHSC9FRu5EspSwECr3k9H1JkOBq98eW/bIW+9G2HqkNNqjLOqWv0xlfECoDJqrJiqw6RrM8vnWbEbN0ohFgshCgSQhRFo7B8PPvIQUU76K6VZjTWQGO1JiJWAGobvXGZo0DGUKguJlXf7NRpRk8NeZkQogAg8Ho83IFSyiVSymlSymm5uZ13sO8MR6MnLkvYBtGXvq0Ihh5qxrXiITXeFDmEkoJSrCZ9M10nRE8N+ZvAtwN//zbwRg/PFxFSyrje7ARI1m+0loRiyLVhyOPWdZcxDGqPkGrW8xR0muhK+OFLwCpgjBCiRAhxM/B74HwhxB7g/MC/ex2n24dfxlnWXStSbCY9jrw5VcEY8sI+HUakxK1QyBwG0k+BOIHHJ3F59Q11nS60epNSLgjz0blRGkvExHOdlSCpuiJvSfUhsKRAUsxSDXpEXG52QmiPIc97DEilrtGLNSX+spt1YkscBclGjiNUmS4Ob7QAuo+8FTUlmokhhzh2raSr3rFZPhUwoM8xHdCoIY/nNm9BUmwmnG4fPr1LkKL2KKQN7OtRRITL68Pt88fnZnrg/zDDUwbohlxHoUlDHky0iculbwC9cFYrao9oxpCHugPF4/wyWSEln1RXwJDr7jsdtGrIA/Gzdkv8+gaDbh/dkANeN9Qdh/TBfT2SiHDEsyEHSBuEvfEYoM8vHYUmDbkzYMiTLXF6owEpeuGsJuqOAVI7ijxgHJPj1ZCnD8LmLAV0Q66j0KQhD7pW7Nb4VeSh5hJ6difUHFGvGjHkTnecu+7SBmOqOwpI3ZDrABo15NpQ5IGa5LoiV/5xgLRBfTuOCAm57uJVKKQPxuCpJ416vQKiDqBRQx5U5Elx2B0oiL7Z2Yzao+pVI4bcGZhfcSsU0tX/4yBDpe660wE0a8i92C1GDIb4jUlODqg5p17KVhlyS6rqBK8B4n4zPU1tGg83V+vZwzqAVg2524c9XtVSgKCa0yvUAbUlmvGPAzjjsfFycwKKfJipSnet6AAaNeROt5eUePVfBgj6V4MbZ/2a2qMh46MF6t1xvpmekg8GE0OMFfoejA6gUUNe74p/RW4xGjAZhK6YQFNZnaBcdyaDwGKM09vDYITUgRSICl0o6AAaNeROtzfkg45XhBDYLUb9RvN5wHFMMxudoFZRdosxvtq8tSZ9EPmyIhTBpdO/0aQh14KPHFRCSb9X5A5tJQOBUuRxmwwUJG0QOf5yvS+sDqBRQ+50xb8ih4Ah7++KKRR6qI30fGhS5HFN+mCyfCdocLn7eiQ6cYAmDbkKP4xzxQQkW4y6YqrVVlYnqEijuFfk6YMxSQ9Wd2Vfj0QnDtCmIXf7SI53xQTYLSbdh6lBQ+50aUCRB/Yc0t1lfTwQnfN3O+EAACAASURBVHggKoZcCHGnEGKbEGKrEOIlIYQtGucNh9PtxR7vigmVFKQr8qNgTgZbel+PJGLq3XHaHag5gXDOTF85fr3mfb+nx4ZcCDEI+AEwTUp5CmAEvtnT84bD7fXj8cn4v9HQFTmgFHn6IM10BoKgjzzO51dgz6GAChr1vp39nmi5VkxAkhDCBNiBo1E6bxuc8Z4+3YxkqzGUXNJv0VgMOQSjVuJ8ftmz8BqsDBCV+qpPp+eGXEp5BHgQKAZKgRop5YetjxNCLBZCFAkhisrLy7t9vaBhjNuCRs2wW0yhdO9+S80RTcWQg0Y204WgIWkAA0UFDf1dLOhExbWSCVwKDAcGAslCiOtaHyelXCKlnCalnJabm9vt6wUNY9ymTzcj2WLE6fH1Xx+mz6uaSmhIkfv9EqdHG5vpbvsApcj7u/tOJyqulfOAA1LKcimlB3gdOC0K522XUPeWeFdMgN1qQkr6rw+zrgykX1OKvNHrQ0o0sZnuSS6gQFTq+zA6UTHkxcAsIYRdqJzmc4EdUThvuwRT3jXhIw+Msd/6MDVWhxyafldaUOQybSD5VFHfoCcF9Xei4SNfA/wL2ABsCZxzSU/PG476eO+n2Iygn7XfKqbaEvWqIddK02Z6/M8v0gZhFj58jmN9PRKdPiYqs1VKeR9wXzTO1RlBRa4FQx6MfNAVuXYMeUiRa2B+GTNUCKKsOQpM6tvB6PQpmsvsrA/164z/pa+uyI+C2Q5JmX09kogJ9YPVwGa6KVMZcqOj16J9dTSC5gx5sHWaFjajQoq8v4aH1QQ6A2koGSjUVEIDrhVb9lAATPWlfTwSnb5Gc4Y8qMjjufFykJAi76+x5BpMBnK6tKPIbak5NEozVqduyPs72jPkLi9JZiPGOG68HKSpb2c/VeS1RzUVsQLaSjgzGA0cI4ekBr1wVn9He4bc7dOEWoLmfTv7oSL3+8BRqjlDrqUSEADlhmySXboh7+9ozpA7tZA+HSCkyPtj1EpdGUif5lwrdRoKbwWoMOaS5j7e18PQ6WM0Z8jrtdC9JYDNbECIfqrINZgMBGoz3SDAatLGrVFtyiXNe0KtgHT6LdqYrc1waqFWdAAhBMkWU/9U5BpsKAGB7kAWU3w3Xm5GrTkPEz6o01V5f0Zzhrze5dNE6GEQu8XYvxV5unZ6dYJS5FpxqwDU2fLVX2r1WPL+jAYNuVcTyUBBVAPmfqjIa0rAZNNUMhAoRa6FyppBGkKGvKRvB6LTp2jOkGuie0sz7BZj/4wjD8aQa8RFEcTp9mki9DBIY1KB+ouuyPs1mjPkqsO5dhRTssXUP+tFazCGHIJNJbQzv4Q9k0bMagWk02/RnCFXHc61o5jsVmOo0Fe/olZ7nYEgoMg15CO3W82UymxdkfdzNGXI3V4/bp9fWz5yiylUerffEEoG0lbECgR85JqaX0ZK/Vn4dUXer9GUIQ/2JtRS1Epyf1Tk9eXg92rSkDtd2vKR260mStEVeX9HU4Y86GtO0ZCP3G4xhbIF+w2hGHLtuVbqXdqKWkm2GCmVWQhHqZ4U1I+JiiEXQmQIIf4lhNgphNghhJgdjfO2Juii0JKPPKjIpexHDZhrAoY8XVuGXEpJvYYSzgCSLEZKZTZC6klB/ZloKfKHgfellGOBifRSz85QZToNKSa7xYTPL3F5/X09lNih0fR8l9ePX2pMKFhMlMos9Y/gSkin39FjQy6ESAPOAJ4CkFK6pZTVPT1vezi1qMgtwQqI/WjZW3sEjBawZ/f1SLpEvYZqkQexW5UiB3RD3o+JhiI/CSgHnhFCfCWEWCqESG59kBBisRCiSAhRVF5e3q0LaalWdJDgxmy/ilzRcDIQaE0oNFPkNboh769Ew5CbgCnAY1LKyUA9cFfrg6SUS6SU06SU03Jzc7t1oVCtaA0ppuRQ385+psjTtFVjBbTVDzZIstVINSl4jTZdkfdjomHIS4ASKeWawL//hTLsUSfU4VxDiske6tvZnxT5EU2GHtZrqB9sELV6EDit+XoIYj+mx4ZcSnkMOCyEGBN461xge0/P2x5a6nAeJKTI+0spW78farWZDKS17kDQNL/qrPm6Iu/HREt63A78UwhhAfYDN0bpvC2o0+BmZ9Ao9BtFXn8c/B7Nla8Fba74kgLzq8acy8DazX08Gp2+IiozVkq5EZgWjXN1hNPtw2Y2aKLxcpBg3Y5+U5O8RrvJQFpc8VlMBixGA1WmXCg/qpKCDNoZf3+i2unmy70nmFGYRV6aLarn1lZmp8urKbUETRtn/aZLULAutsaSgaApKkpLKz5Q+zAnjDmqR6qeFBS37Cuv47YXv2LHMUfUz62pGXvHeaNYeFphXw+jS9j7rSLXnmvFqcE4clCuoHKRo/5RewTSCvp2QDrtEtpM74U9GE0p8rxUG6PyU/t6GF3Cbu5vivyI6gxkz+rrkXSZercPIcBm0pYhT7IYOYaeFBTvNOUp9HNDrkUMBtG/+nbWlCj/uMaSgUApcrvZiEFDezCg3HdHfHpSULwT2oPpBdedbshjgKqA2F8U+VFN+sdBKXItxZAHsVtMHPckgSlJV+RxTGgPphdcd7ohjwGqAmI/UeQazeoEpZi0VPkwSLLViNPjV7H7uiGPWxrcvRc+rRvyGGC3mPqHj9znVZ2BtKrIXT5NJQMFSbYG+sKmD9KzO+OYoA1IMuuKXJMk9xcfed0xkH5NxpCDUuRaC2+FZkIhbZDuI49jnG4vSWZjr+TB6IY8BtitppB/LKEJNZTQpmtF+cg1qMiDQiFtkFoR6Z2C4pJ6t6/XQlt1Qx4Dki3GUIxyQhNMBtKqItdgwhkooeB0+/CnDgwkBZX19ZB02qHB7QuVVIg2uiGPAXaLqX+UsdVoi7cg9S6vJn3kwR62ruRAIpDuJ49LejMzXTfkMSDZauwfRbNqj4AlFWzpfT2SbqGWvhpU5AHj0GDLV2/UlPThaHTC4XT33ma6bshjQLLV1D/K2NaUaFaNg9qM0qIiD/pday2Bhi26Io9L6t3eXqvjoxvyGJBsMeL2+XEnegPm2iOa9Y+7vX48PqlJRR6qSS7S9KSgOMbZi+GtuiGPAaGlb6L7yWuOaFaRa7GpRJDgw6fe7dOTguKY+l5MONMNeQxI7g/t3rwu1VRCo1mdWmzsHST48HG6fXpSUBxT7/L2Wnhr1Ay5EMIohPhKCPF2tM6ZKAQVeX0ihyAGjYdWFblLe429gwQVeZ3LqycFxTG9uZkeTUV+B7AjiudLGJoUeQK7Vmq12xkItK3IW3Sh0pOC4hJPYI8srsMPhRCDga8DS6NxvkTDHmrAnMCKXONZnSFFrkUfefMuVGl6UlA8Eoxai3dF/hDwMyDBwzK6R/ApnNCKvPqQek0f0rfj6CYhRa7BqJUWrrvgg1T3k8cVdaFa5HHqIxdCXAwcl1Ku7+S4xUKIIiFEUXl5eU8vqymCfteELpxVfQhSBoA5uk1lY4WWo1aCDZhDUSugJwXFGU1tBONXkc8BLhFCHAReBs4RQrzQ+iAp5RIp5TQp5bTc3NwoXFY7BEOOErqUbXUxZAzt61F0m/peXvr2NnZrs8JZoCvyOKOul/vB9tiQSynvllIOllIWAt8EPpFSXtfjkSUQTeFhiazItW3ItazIQbnv6l0+SMrUk4LiEGcvb6brceQxoMmHmaCK3O9TS3kNG/KmDucaVeQWo/KRC6H85DWH+3pIOs2o62XXSlTPKqX8DPgsmudMBIwGgc1sSFxFXnsU/F7IHNbXI+k2TrcXm9nQK0X/Y0GoSxCo30PVob4dkE4LQo2X49hHrhMByRZT4mZ2VherVy0rco12Bwqi+sIGVnyZhVB1sC+Ho9OKYPP1uI1a0YkMu9WYuBUQg6GHGRpW5C5tdgcKotq9BYRCxjBorIaG6r4dlE4ILUSt6ERA4ityodlkINC+Ik9p4VopVK/VunslXgg+ZHuj8TLohjxmqM2oRFXkxZBaACZrX4+k2/Rm0f9YYLc0W/EFDbnuXokb6t0+ki1GDL20B6Mb8hjRYjMq0ag6pGn/OATacGk0hhza2ewE3ZDHEaryYe/NL92Qx4gWiinR0HgMOSSGIm/0+PH6/KrVXlKmbsjjiHq3r9dqkYNuyGNGwipyn1cln2g49BASw0cO4PQ0j1zRfeTxQm839tYNeYxItpiawsMSidoSVW1P64o8AaJWgJZ+cl2Rxw297brTDXmMsFuNidlYomKfes06qW/H0UO0rsiDNTzqmocgVhfrdcnjBDW/dEWueZItJlzegA8zkajcr16zRvTtOHqAzy9p9Pg1m54PTTU8nM1DEP0e1WRCp89xunqvOxDohjxmhApneRJMIVXsA3MypA7o65F0m3p371amiwVBt1C9HoIYl9S5enfFpxvyGBFqx5VokSuV+5RbRWizRglAXaMy5Km2RFLkgc3nygN9NCKd5jh7sV8n6IY8ZgQVecJFrlTsg2xt+8d7uzJdLGjjI08fCgazetDq9ClSSuUj78UVn27IY0Ry83ZciYLPq9LANewfB3AEFHlvxvn2Nk0NmAMrPqMJsobDiT19OCodgAaPDyl7VyjohjxGBH+JdYlkyKsPqfK12do25MGHq5ZdK/b2hELOaN2QxwGhFZ8etaJ9gkYi6I9NCBIgYgWabrQUq7mPR9J9gkaiRT2f7JHqd+RLoDmnQZwxaCOoG/IYETLkiaTIgzHkGlfkwYdrioYVuclowGoytNyDyRmtQhD1Koh9SvCe783w1h4bciHEECHEp0KIHUKIbUKIO6IxsEQj6H91JJQi3weWVEjWdjNtR1CRaziOHNQcayEUckapV9290qfUu3p/DyYaitwL/FhKOQ6YBXxfCHFyFM6bUKQkoiIv36WMhYZDD6FJkWs5jhzUqq+F6y57pHqt0A15XxLcgO7NEhA9NuRSylIp5YbA3x3ADmBQT8+baFhNRixGQ2Ip8vKdkDeur0fRY+pcHpLMRkxGbXsaU2wmHI2epjfsWWDP0RV5HxNc8aXGuSIPIYQoBCYDa9r5bLEQokgIUVReXh7Ny2qGVJuJOpen8wO1gLMS6sogd2xfj6TH1Lm8mvaPB0m1mtsKhZxRuiHvY4IP11Rb722mR82QCyFSgH8DP5RS1rb+XEq5REo5TUo5LTdX2z7V7qIUU4Io8vKd6jUhFLmvV9VSrFBCoT1DvrtvBqQDNO2L9WZ4a1QMuRDCjDLi/5RSvh6NcyYiKVZT4oQfHt+hXhNBkTd6NJ3VGaRdoZA3HpwnwFHWN4PSwdHowWgQ8V2PXAghgKeAHVLKP/d8SIlLitUU8pdpnvKdKmJFww2Xg9S5vJrO6gySZjO39JED5I9Xr2VbYj8gHUAp8hSrCdGLQQHRUORzgOuBc4QQGwN/LorCeROONlEFWub4Dsgdo/mIFQjcaAngIw+GH0opm94MGfJtfTMoHeoavb2eNdzjs0spvwS0fzfHgFSbGYfL0dfD6DlSwrEtcPKlfT2SqFDn8iaMj9wvW1Xas2dB2iA4trVvB9ePqW3s/RWf9mevhoiZj1xKKF4N+z4Gl0P5scdfphryRoPqQ9BYDQMnRed8fUyiRK0EfwZHY6u2Yvnjo6/IT+yBHW8q33v6YBj3DVWkS6cNjkYPab0YsQK6IY8pKbampW+v+cuO74A3b4eSdSCMYLaD2wHL7oeLHoRTr+r5NY5uVK8FE3t+rj5GStnr/RRjRTC8TYW42po+yD8F9n0CXheYrD27iNcNy+6D1Y8BEqzp4KpR82vydfC134AtrWfXSDAcjV4K0m2dH9gDtD97NUSK1YTHJ3F5/djMvbCDvWcZvHItWJLh4r/AhKvV30s3wnt3weuLoO4YnHZ7z65TugkMJhURoXFcXj8en0yIzc6gH7a29aqv4FRVpbJsGwya0v0LeF3w0jfVQ2H6Ijjjp6ozVE0JrPwrrH0CDiyHa/8FOSN78JMkFg6Xh9G2lF69hvZnb6RICT4PGM2x2aCrPQq73oWS9Spxxmjm7MZs1hsKcNSfiS0jyr/YHW/BazdC3li47nVIyWv6bOBkWPg2/HsRfPhLSM6Didd0/1qlG1X8uLl3VUYsqEuAErZBUsPV8xk8Xb2WrOu+IZcS/vtdZcQveRSm3ND0WfpgmPd7tWfyynXw1Plw7WsweFr3rhWOhio1zw+vVfeXwai6Uw07DUaep0RLb9MNO+Jo9PZqMhAksiF3OWD3B8qYHtmgOopLH5iSVLW+obPh5Etg2FwwRDHB9cgGWP5H2P0+SL8ymhlDwOdmdPlnPG1pxPvkC3D6D5WqMUbhF7zpFXWTDZqi1FBSRttjjGa44kmoPwFv/1AZ99zRXb+WlMq1MvbrPR93HFCXAE0lgoRcK60NedogSC1Qhnzmd7p38vXPwtZ/w7n/09KIN2fYbLj5Q3hhPjx3CXzrFRh+eveu15zaUnVPffU8+Nxgz1Y9SX1uOLgC1jwOlhSYuhBmfx/SBvb8mkEaawN25B04+lXAjvhVn9rsk2DYHLU/MPS0du2IlFIbUStxR9Uh9Yvd8A9w1ylDOnQWjL8cLHZoqIbj22Hji7DuScgYCrNvhynXgzmp+9et3A8f/xq2va4m2pwfwqRvqcJFgSf3Z1sO8/JLz/BQwSpS3r8Lip6BSx5R4+suRc/A23dC4VxY8DJYO1D6JgvMXwqPz4XXb4FFH6tOMl2hYi80VEZfbfURdTGoTBcrmjY7W8WSC6F+XyXrunfiE3vg/bthxDkw586Oj80eATe9D/+4FP55JVz9PIz+WveuK6W6T9+/CzxO5YOfuhAKJjWpYZ8Xileq+331Y7DuKeU6nHNHx/dCZ1QfVnZk/bPKjqQMUPfpKfOVnXBWQtlWWP+cOi5jKMz8rnrINbtuo8eP1y91RR4xJeth1aOw/Q0QBhh/BUy7EYbMVEuw1ridSq2vfRLe+6l64s/+Pky/GaypkV/XWQmf/x+sW6pU7xk/hdN+0O6GT7LdzjL/VDaf+11O8xXBez+DZ+bB6T+GM3/edXW+8q/w4T0w6mtw9T8iexClFcBFf4R/3ageZLO+27VrHvxSvQ6b27XvxSm1AaOXCFErHda8HzxduSXqyiGlCyUypFTz1GiByx6LbPWaOgAWvgsvXA4vf0uJh/GXRX5NUON86w6lhIfNUe6c9ureG00w/Az15+x74JNfw/L/U4b93P+Bid9s//4PR+V++OJPsOll9bOfcgVMuzlgR9r52d31sPMdJag+uBs+/706fsZiSCsIPVR7e35pe/a665ULY+2TULxK7aDPvg1m3grpnRRgtNhhwpXqCXtohTLky+6DL/+sfgkzb4XknPDfb6iCoqfhy4dVVMjk6+HsX6hJHIbgjeZw+WD8PDVB3/u5uvbej+HyJyJzd/j98PH9sOJh5Ze8YqlS25Ey/nKldD75DYy7pPP/q+YcWqFWORpvJhGktkHdaOlJ2u0OFCRYT73NZifA4Bnq9fBq5QqIlF3vKb/4hb/vcG63ITkbvv0W/PNqJRo8TrVCjYTtbyr3n6sOvvYAzPpeZA+QrOFw5dMw4zvKqL7xPVj5CJx1F4y7tONzlG2DlY/C5leVoJp2s1L2GUM6vqYlGU69Wv05vA5WPgxf/kVdd/wVuEd+C4GfNN2QN+PQSuWnqi+H0s3KeHucallz4e/V0qsrahrUEq1wrvpzZL36JSx/EFY8AiPPhdEXwIAJYMtQD44Tu2HPRyqG1uOEkefD+f8L+Z2XYA8u30M+TFsaXP6YWnq+9UPl8jj7buXqCefyaKhWk3zbf9Rku+iPXVMcwZ/56w/C32bCR/eqyR8JUiqfZOGchMjoBKhtUL+L3o7zjQUGgwifqzBoqvIj7/skckPudcEHv1B5CNMXdX1AtnS4/nV4+Vq1h+Os7NgoOyvh3Z/C1n+p0NbLn+heUbahM+HmZbD9v/DZ7+G1hWqf4JT56j7PLFRRV7VHoWQt7HwXjhSp/bNZ31UGvCsPrSBDpsM1LyhVv2YJfPUCg7e8ymprBmyYAzWTVC7H6AuUzYoi2jLk2/4Da5eo+Oi8ceoJf/Jlate6q8asPQZNVb+I8l1qqbT9DeV+aU1SplpyzfiOCu2KkNRwPszxl6vNknd+pOJxN7+q3C1jL26KDPG6lf/941+DoxTO+5XyA3bXoGYWwtw74bPfwdQbI9uUqtwPjqNqJZEg1AQVuV37hhzUHGszv0Ct2ApPVys/KSObN6v+BlUH4Pr/dH9T3pKs9m7+fbNyA+56D869V7kqgmOoK4cNzypF7HYqF8ncO3sWCGAwqHv05EuVS2nji+rnWflI22MHTIALfqfcMPas7l8zSNZJKorn7F+wc/lr7P3iFc6v+AqK32n6vF8b8rN/of5Y06MbadKa3DHqF3HBb9VEPr5DbXiYbOqXkD++Ww+OtMDyvaahHcWUmq8eIjvehE8eUBPfkqLGglBj8NRD/gTlDx88tYc/JOpBsPGfygf6neWd3zh7PlSvI87p+bXjhJoGDwah/TZvQdq0e2vOyHNh93vqgdyZa6y2VK1Mx3y9579vs03N7a+ehw/vhacvUJuHWcOhsUYJJ+mD0fOUXzuC1W3EGIzKPz/+MuWqObZZKXGfR+0X5Z3cMlQ3mtjS2F9wEbd5BvD+9aczNseqomC66jWIAG3N3milmEeKwaAmfJT8wWajgRSrieoGd/sHCKEUxNiLYd+nyv9fsQcQSi2MuUjdVNF6iJmTlEvq5W+pzdrONj53vauW2QniHwe12ZlqM2MwJIarKLWjmvdBg7x3Wee/w2X3qSSiCx6IzsCEUBEd469QYYwHvwDHMaVMx31DrUp7u7a9NUWt3mNIi6YSJmvXNpq7gLYMeQKQnmQOLefDYjDCqPPUn95mzEUw4lz49LfKhxhOndRXKP/4nMTqrV3T4EmIjc4g6UlmTtSFEQrZI5QC3frvjuPJi1fD5lfg9J9Ev36KNQWmflv96QfEoqkERLnVm07npCeZqXHGUbs3IWDeH8DToPzz4dj8slr+TohCrZY4ItEMeYbdEn7FB4HoijVQeaD9z/0+ePcnanPw9B/1ziD7EbWNXoSA5F523emGPMZEpMhjTc4oFUO/8Z8q/bk1fr9KfBg8Pbr+yzigtsFDWlLiLEzTk8xUdyQUJlyl8izWLW3/87VLVInir/06NinvCU61002azYyxl113uiGPMXFpyCFQAKlARc54Glt+tu11OLFLxdcnGImmyDPtFhyNXrw+f/sHpA+GU65UUVn1FS0/O75TrcpGXaB82To9ptrpITMGEVHR6tl5oRBilxBirxDirmicM1HJsJupjkdDbk2Br/9JqbE3b1MqHFTc+rJfqVKop1zZt2PsBWobvQllyDPswcioDubYGT8Bn0tlNAe7CdWVw8sLVKTUpX9NmDyBvqbK6SbD3oVkvW7S4zWlEMII/A04HygB1gkh3pRSbu/puRORoCLv1Zrk3WXs1+Gce1Was7NS+VNXP6Zix698undDPvuImobeL/ofS4KGvLrBQ3ZKmNrjuWNUtuMnv1GRS4NnqFDD+uNww5u9F47XD6l2eshO0YAhB2YAe6WU+wGEEC8DlwK6IW+HdLsZt9dPo8dPUi921e42p/9YVU/86H7VYSgpSxU+GjK9r0cWdRo9Ptxefyi+PxEIri469JMDzP2xqhC68q/w1QuQNQJufFclxelEjeoGNyPzercWOUTHkA8CDjf7dwkwMwrnTUjSk5qWvnFpyIVQ6dgTF6hKklnDe1YVMo5JpDorQYLL+JqOIldAra7O/1847Q5wnlBVOqORHa3Tgur62OzBRGOt3J5/QLY5SIjFQogiIURReXl5FC6rTTKSgjdaHPrJm2NJVhEqCWrEASqdythlxsCHGSsyIlXkQZKzlatFN+JRx+Pz43B5YzK/omHIS4DmJcIGA0dbHySlXCKlnCalnJab2zvZTVqgaenbiWLS6XUqA4kzWckJZMjtXTTkOr1GUKxlaCRqZR0wSggxXAhhAb4JvBmF8yYkzTejdPqWinplyGOxGRUrUm1mhNDnVzwQFGuxMOQ99pFLKb1CiNuADwAj8LSUcluPR5agBI1GRbg0ap2YUVmfeIrcaBCk2czU6Cu+Pie4KtJE+CGAlPJdoJ16rzqtCRqNijpXRMdXO90YAjenTufUNnpwefzkpoYJvWtGRb0bIRLLRw6QaTdTGaFrxen20ujxJ9TDrDdp9PiobfCQl9Z54/GqwO9AMwlBOpFjNRlJtZlCy/qOeGltMVN/s4yZD3zM+1tLYzA6bfPellJmPLCM2b/7mFfWFXd6fGW9i4yk3k+fjjU5KVZOODoXCqv3VzDjgY+Z9puP+Nune2MwMm2zpaSGuX/4hBm//ZgH3uk8uroqhpvpuiHvA3JTrJR3osgPnqjnvje2MXVYJqPyU/jhKxs5XOmM0Qi1R3GFkztf3ciYAWlMGZbJvW9s4+CJ+g6/U1nvTkglmhPB/Gpw+/jhyxvJS7Vyztg8/vjBLlbuPRGjEWqPRo+P21/agMVo4KIJA3jyiwN8uvN4h985EfgdxGIPRjfkfUB2iqVT18qTX+xHCPjrtybz+HVTkRL+9OGuGI1Qe/z5o10YhOCJ66by1wWTQcLSL/d3+J2KOjfZyZ27YLRGbqo1ZETC8e8NJRyrbeR3V0zgr9+awuDMJP737e34/W0ih3WAp748wMEKJ3+8aiIPf3MygzOTePSTPR1+p9zhIsVqwh6DpiW6Ie8DclKsHW52ur1+/vvVEb4xcSB5qTYGZiSxcE4hb2w6yqGKjlVmkK+Kq1j0XBFXP76KF1Yf0sQNKqXk+dWHuOrxlSx6rohNh6sj+l5JlZO3NpfyrRlDGZBuIy/NxsUTC3jjq6O4vL6w30tkRV7t9OD2himcBby+oYQx+anMGJ6FzWzkpxeMYecxB590ojKDHK50cucrG7n87yt4aNnuDv+f44lPdpZx/VNruHbpwf2VVgAAFZZJREFUaj7cdiyi77i8Pp5deZAzRucyZ2QOZqOBb88uZENxdYervnKHK6K9mmigG/I+IDvF0qFi+qq4inq3j6+dnB9676Y5wzEKwT9WHer0/F8VV3H1E6vYVFJNncvLL/+7lbte3xyxMX9ncynzHv6Ccfe+z7VLV0dsUAG2HqnhuqVrGHfv+1z40HLe3RKZb9/vl/z0X5u5979bqXf52Hi4mqufWMWXezpf7j/15QEEcNPcpiYI3zh1IA6Xl5X7KsJ+r7LeTVYChR4GCRqPivr259ihino2FFdz+ZRBoXo/F00oYGC6rdNVDCi332V/W8GH244hgIeW7eHaJ9fgdIfpTNSKDcVVXPPEKsbd+z7fePTLiA0qqIf2bS9uYMJ9HzDn95/w1JcH8EU4r5d+sZ+bni2iuNLJkaoGFj+/nudXd34/vb2plHKHi5ubza+LTi0A4J0O5vdx3ZAnNtnJVqqcnrClRlfsq8AgYOZJ2aH38tNsXDShgFfXHQ7fkxHly/vJa5vITbHy4Q/P4J0fzOUH54zk1aISHv2k8w2tP324i++/uAEpJddMH8LusjqufHwlb2w80ul31x+qYsGS1ewqc3D1tMEAfO+fGyJyCT32+T7+tb6EH5w7ind+MJcP7zyDwuxkbntpA8dqGsN+r8bp4ZV1h/nGxIEMzGjKQj1tZDYpVhPvb2nfSPj8kiqnm+yEVOTqZyoPs+G5fLfKrL5wfFOneLPRwLdPK2T1/kq2HqkJe26X18fi54vwS8kbt83l9e/N4ZEFk9lQXMUPXtrYqVhYd7CSa59cw6EKJ9dMH0KDx8fi59fz5492d/pzbTpczdcf+ZJPdx7n66cWMDTLzq/f3s5tL27ocPUB8Omu4zzw7g7mnTKAD+88g49+dCbnjcvjvje2sqG4Kuz3pJQ89eUBRuWlcMaonND7gzKSmDw0g/e3hn8IndANeWKTE/jlVoaJ9V2x9wQTBme0qdFw45xCHC4vr28oCXvuvyzbzb7yen4//1Qyky0IIbjz/NFcPnkQD328m892hV86P7PiAI9+spdrpg3hrdvncv8l41l255lMGZrJj17d1KFyWnewkhueWkN2ioU3b5vDry49hbdvn8s104bw6Cd7WfpFeKX3xZ5y/vThLi6ZOJA7zxuFEIKsZAuPXTcFt9fPz/+9GSnbNxCvFBXjdPtaqCVQ0UFnjs5l+Z7ydr9bUefCL4kojExrBI1HuFXfqv0VDEy3MSzb3uL9b84YSrLFyFNfhukeBPz9033sLqvjz1dPChWDumTiQO77xniW7SjjoWXhDfKWkhpuemYdBem20Px69wenc+XUwTzy8Z4OI2e2Hqnh+qfWkJZk4t07Tuf380/lxVtm8suvj+O9rce4+/UtYedIcYWTO176irED0vjz1ZOwmoyYjQb+cs0kCtKT+Mlrm2j0tO8aWrW/gu2ltdw8d3ibaqVnjc5j69GasFna5Q4XebohT1xyksMrpjqXl02Hq5kzIrvNZ5OHZjJxSAZPh1lObiiu4snl+1kwYwhnjG4qgyCE4LeXT2BMfip3vNx+9Mvbm4/yv29v52sn5/PbKyZgNqqpkW4389TC6ZwyKJ3bXvqqXVfHmv0VfPvpteSn2XjlO7MpSFfK2GQ08NsrJnDRhAH85p0d7ar6w5VOfvDSV4zKS+X38ye0uFlOyk3hZxeM4fPd5byxsU3VB7w+P8+tPMTM4VmcMii9zeezRmRTWtPIoYq2P29pQOUPSEBDnhMoX9ve/JJSsnp/JbNGZLcxTOlJZq6ePoS3Nh2ltKahzXd3lzn4+2d7uXTSQM4e27LU7Q2zh3HV1ME88snedlXq7jIHNzy9hrQkMy8smhl62FhMBv4w/1QumzSQP36wq92HyN7jDm54ei2pNjMvLprFsGzVuUgIwaLTT+KH543i3xtKeGhZ283HepeX77ywHoAnrpvaolBdqs3MH+afyv7y+rAPkaVfHCA72cJlkwe1+ey0kdlICav3V7b5rMHtw+Hy6oo8kSkIuABKq9u6DNYeqMDrl8wZmdPmM4DvnnkSByucbXxzjR4fP31tEwPSbPziorbdyJMsRp64fipSShY/v57axqaEkc93l3PnKxuZOjSTRxZMbhNXnWI18ezC6ZyUk8zNz61j2fay0GcfbS9jYUBlvbx4FvmtDKPRIPjz1ZOYOTyLn7y2KbSsB5W8c8s/ivD5JY9fP7Xd3f3rZxcyeWgGv3prW5tInw+2lXGkuqGFb7w5swOuqVX72/rJj9UmriFvUuRtleLusjoq693MOqmtUAC1F+OXkmdXHmzxvpSSX/5nK8lWE/9zcdt2f0IIfn3ZKUwcksGPX93InjJH6LO9x+u4bukazEYDL94ys4ULDNQcefCqiVw4fgC/fns7Ty7fH1LX247WcO3SNRiE4IVFMxmS1XIVAXDHuaO4aupgHv54D8+saHoQeH1+fvjKRnYdq+WRBZMZmt32u3NH5XD55EE8/vk+9h6va/HZ3uNq8/eG2YXYzG2Lik0cnIHdYmTlvrbiJvgQzQ1XEz7K6Ia8DxicqSZySVVbpbhibwUWk4GpwzLb/e7XTh7AyLwU/vbJ3hY+9r981ORSSQ2TBTosO5lHFkxm73EHVz22ine3lPLox3tY9Nw6RuWl8tTC6e1OWIDMZAsv3jKLUfkpLPpHEdctXcP1T63hln8UMSo/hZcXzw7rprCZjSy5YRojclO4+bl1PLRsN+9vLeWqx1ax93gdf/3WFIbntN8f0mgQ/GH+qdS5vPz67aYkDK/Pz58/2sVJOcmcNy6/3e+OyE0mN9XKqnY2PMuChjw98Qy5zWwkPcncrqpeFTA6s8MY8iFZduadUsCLa4pbuGZeW1/C2oOV3D1vbNiGFTazkcevm0KSxciCJ9fwr/UlPL/6EFc+vhK/lLywaGZITbfGZDTwyILJXDh+AA+8u4NL/7aCW59fz6V/XYFBCP65aGbYOSKE4HdXTOCC8fn86q3t3POfLXy68zg3PruOj7aXce/FJ3PWmPDNMu75+jjsFhP3/Kele+ZPH+4myWzkullD2/2exWRgemEWK9qJvy+vU/MrVq473ZD3AdnJFmxmAyVVbW+0FXtPMG1YZliDajAIfnz+aHaVOXhiufI7f7yjjCeW72fBjKEtXCrtcdaYPJ769nRqGjxqI/Kj3ZwzNo+XbpnVad3krGQL/7r1NO48bzTHahs5Ut3AneeN5pXFsztdQqYnmXll8WzOGZvHQ8v2cOsLG6iod/PsjTM6HfPo/FS+e9ZI/rvxaMhPv+SL/ewrr+fn88aGzcwUQjD7pGxW7qto4z8trWnEbBQJudkJajPuSDvza9X+CgZnJrWrbIPcef4oGj0+fvXWdqSU7C5z8Ks3tzG9MJOrpg4J+z2AgvQkXrxlFlnJZn7y2ibu/e9Whuck869bT2N0fmqH37WYDPz92in89vIJ+KVk69EavjVzKG/dPpcxAzr+rslo4NEFU7hpznBeWlvMjc+u+//27j04qvKM4/j3SZZcSWCzQC4ECAnhDoKNXLQKFKjSirbWVrQ62Iutxc4w06lTHDva1o6dqrWXsa127Ey1U6q1U5XxUgEr3hOJg4KACUkwEMMlFwgk0XB7+8c5GzfJbvaEbM7mJM9nZieb3bObX86effY973nPvpR/dIxfXTOHb10Sfo8taMzIZDasmk7Z/mb+/Go1YA1TfPGDw6xbWhR5piXg4qIA1Q1tHD3Zde+6/ri7e3xDZ/pwDxER6412vOsbrbG1gw8Pn+T2y6f1+vhVc3K5cm4u979UQdn+Zkqrm5iVl8ndq53NcH/Z1LFsu30pH3zcQmBkcsSWTjgpIxJZv6KY9SuKHT8maFTaCB65qYTapjYaWzuYlTcq4gdWd7ctK2LrniP8cOMOFhZm8fq+Rr48J7fLEM1wFhcF2PR+PdUNbV1maqk//gnjMlJIGGKn5wfl+1P5qNs5B+fOGcr2N7Mywh5M0JRxGaxfXswDmys50vIpFUdOkprk4w/Xz3e0vqZmZ/Di+svYXd9CYoIwMzfT8bSGCQnCDQsncsPC8K3g3iT5Erhr9Uy+v6SQ2qZ2pmVnMMrh95ysuWgCpTVN3PffCt6qaqK8tpkZuZnccllhr48LdlGV1TSz+oK8ztsP2MehgnvfA00LeZzk+9N6tMiDXQAXhznQ2d0DX7+AQHoS2yobuHJuLnetnum4KIJVkEsKsvoWOkYmBdIj7mJHkuxL5B/fXcg9z+3h3QPHuPniAjasmh61QIT2k4cW8tqmdgrGRG6Vel2+P403qhq7zA279/AJjrefZrGD7eu2ZVPwJSbwr/KDzJ84mrtXz+o8iO1EYoIwN3/0eefvj+zMlB7HaqIREe67di45o1J46YPDLJ+Rzc9Wz4r6npqVl8nIZB9l+5u6FPK6Y+0E0pNIT3anxGohj5N8fyq7uo3Xfau6kYxkH3PCjMDoLmVEIj+/evZAxRuU/OlJPHjdvD49ZlIgjZzMFEprmrhp0aTO22ub2lg1JzfWEQeN8f5U2k+dpbntVGfXQLCh4KSQiwi3Lini1iVFA5pzMEn2JXLHqhncsarnYIFIfIkJlBT4e4xcOdDc3mv3VaxpH3mcjPen0tx2iraQk3verGpiYWEAX6K+LLEiIiwuClBW81k/eUv7aY61n6YgzCiGoaLQ7i6rCTmFvLSmiYJAWp9a1iq6RYUBqo62dhnuWdukhXxYKBpr7ebvs4c8HWxu50BzO5dMid5aUn2zuDBAY+upznW93+477mv3jpcUZ1vbV6U9DPD02XOU1jRHHNaqzl9nP/l+a4+nteMMdcc+YWpIV95A00IeJzNzMwFrnCzQecblpcXDdz7TgRLsSii1x5MHT0EPvgZD0fjRqaQnJVJ52CrkO+3v3fm8FvKYm52XSXpSYuf2VXH4BAAzXNy++lXIReR+EflQRHaKyNMiEp+jGx6U708lI8XH7nrrRd+69ygFgTSKxg7dVmK85PtTGT86tXO87666FvxpI1wbURAPIsL03MzO4zCvVjQg4qx/XPWNLzGBBZOzeK3SOri855D14Tk9t/chk7HU3xb5FmC2MWYuUAnc0f9Iw4OIMH+in9LqJlo7zvB2dRPLZ2Q7HqalnBMRls8Yx7aKBlo7zrC9tpm5+aOH/LpeVJjF+3UtnPz0NM/vOsSCgixX5o8cji6flcOB5nZ215/gzX2N5I5KYfxo9xoK/SrkxpjNxpjg0bpSIL//kYaPFTPGUdPYxr0v7OXU2XNcOXfojqKIt6vn5dFx5hy/fG4PNQ1trIwy/nwouGTKGM6eM9z7wl6qG9q4al5e9Aep8/LFWTkk+RJ49PUa3qhqZOm0ca42FGLZR/5t4MVId4rI90SkXETKGxoaIi02rFwxO4dkXwIbyw6wYHIW8yeGPy1f9d+FE/0sKsziie0HSRmRwKrZOdEf5HELJweYlp3BP985SE5mCl+7UNtZAyUrPYnrL5rAM+/V09pxhq+G+ZKtgSSRvvqxcwGRrUC4rf5OY8yz9jJ3AiXANSbaEwIlJSWmvLz8POIOPa9UHGXrniPctmxKjy8TUrH18fFP+NMrVaycmd3rd28MJXsPneDxtz/ihgWTmJMf/fwEdf7aOs7wu62VFI0dyZoFfT8z1QkRedcYU9Ljdgd1N9oTrwVuBZYbYxzNDqyFXCml+i5SIe/XmZ0icgXwE2CJ0yKulFIqtvrbR/4QkAFsEZH3ROThGGRSSinVB/1qkRtjpsQqiFJKqfOjZ3YqpZTHaSFXSimP00KulFIep4VcKaU8Tgu5Ukp5XL9PCDqvPyrSANS6/od7NwboOR324OSlrOCtvF7KCt7K66WsMDjzTjLG9Piu67gU8sFIRMrDnTE1GHkpK3grr5eygrfyeikreCuvdq0opZTHaSFXSimP00L+mb/EO0AfeCkreCuvl7KCt/J6KSt4KK/2kSullMdpi1wppTxu2BZyEckSkS0iss/+GXZ6HhGZKCKbRWSviOwRkQJ3kzrPai+bKSIfi8hDbmbsliFqXhGZJyJvi8hue/Lu61zOeIWIVIhIlYhsCHN/sog8ad9fFo/XvVueaHl/ZG+fO0XkZRGZFI+cdpZes4Ysd62IGBGJ28gQJ1lF5Bv2ut0tIhvdzuiIMWZYXoD7gA329Q3AryMstw1YaV8fCaQN1qz2/b8HNgIPDeZ1C0wFiu3recAhYLRL+RKBaqAQSALeB2Z2W2Yd8LB9fQ3wZBzXp5O8y4LbJvCDeOV1ktVeLgN4DWuu35LBmhUoBnYAfvv3cfHaDnq7DNsWOXA18Jh9/THgK90XEJGZgM8YswXAGNNq4jOBRtSsACLyOSAb2OxSrkii5jXGVBpj9tnX64GjQI8THQbIAqDKGFNjjDkFPIGVOVTo//BvYLm4OZtuV1HzGmNeCdk24zkRupN1C3AP1gf+p26G68ZJ1luAPxpjjgEYY466nNGR4VzIs40xhwDsn+EmcZwKHBeR/4jIDhG5X0QSXU1piZpVRBKA3wC3u5wtHCfrtpOILMBqEVW7kA1gPHAw5Pc6+7awyxhjzgAtQMCVdD05yRvqO/QyEfoAi5pVROYDE4wxz7kZLAwn63UqMFVE3hSRUntWtEGnXxNLDHa9TRzt8Cl8wKXAfOAA8CRwM/DXWOQLFYOs64AXjDEH3Wg4xiBv8Hlygb8Da40x52KRzcmfDXNb9+FbTpZxi+MsInIj1kToSwY0UWS9ZrUbHL/Feh/Fm5P16sPqXlmKtZfzuojMNsYcH+BsfTKkC7kxZkWk+0TkiIjkGmMO2cUk3C5THbDDGFNjP+YZYBEDUMhjkHUxcKmIrMPqy08SkVZjTMSDTXHOi4hkAs8DPzXGlA5EzgjqgAkhv+cD9RGWqRMRHzAKaHYnXg9O8iIiK7A+SJcYYzpcytZdtKwZwGxgm93gyAE2ichVxhi3Z2R3uh2UGmNOA/tFpAKrsG93J6Izw7lrZROw1r6+Fng2zDLbAb+IBPtuvwDscSFbd1GzGmO+aYyZaIwpAH4MPD5QRdyBqHlFJAl4GivnUy5mA+t1LRaRyXaONViZQ4X+D9cC/zP20a44iJrX7q54BLgqzv24vWY1xrQYY8YYYwrsbbUUK7PbRTxqVtszWAeSEZExWF0tNa6mdCLeR1vjdcHq73wZ2Gf/zLJvLwEeDVluJbAT2AX8DUgarFlDlr+Z+I5aiZoXuBE4DbwXcpnnYsYvAZVY/fJ32rf9AquoAKQATwFVwDtAYZy312h5twJHQtblpsGatduy24jTqBWH61WAB7EacLuANfHcDiJd9MxOpZTyuOHctaKUUkOCFnKllPI4LeRKKeVxWsiVUsrjtJArpZTHaSFXSimP00KulFIep4VcKaU87v/UeBLoUHgGAwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Moharam et. al Formulation for stable and efficient implementation for RCWA\n",
    "plt.close(\"all\")\n",
    "'''\n",
    "1D TM implementation of PLANAR DIFFRACTiON\n",
    "STILL NOT WORKING YET\n",
    "\n",
    "only: sign convention is exp(-ikr) (is the positive propagating wave), so loss is +  not - \n",
    "source for fourier decomps is from the paper: Formulation for stable and efficient implementation of\n",
    "the rigorous coupled-wave analysis of binary gratings by Moharam et. al\n",
    "'''\n",
    "\n",
    "L0 = 1e-6;\n",
    "e0 = 8.854e-12;\n",
    "mu0 = 4*np.pi*1e-8;\n",
    "fill_factor = 0.3; # 50% of the unit cell is the ridge material\n",
    "\n",
    "\n",
    "num_ord = 10; #INCREASING NUMBER OF ORDERS SEEMS TO CAUSE THIS THING TO FAIL, to many orders induce evanescence...particularly\n",
    "               # when there is a small fill factor\n",
    "PQ = 2*num_ord+1;\n",
    "indices = np.arange(-num_ord, num_ord+1)\n",
    "\n",
    "n_ridge = 3.48; #3.48;              # ridge\n",
    "n_groove = 1;                # groove (unit-less)\n",
    "lattice_constant = 0.7;  # SI units\n",
    "# we need to be careful about what lattice constant means\n",
    "# in the gaylord paper, lattice constant exactly means (0, L) is one unit cell\n",
    "\n",
    "\n",
    "d = 0.46;               # thickness, SI units\n",
    "\n",
    "Nx = 2*256;\n",
    "eps_r = -n_groove**2*np.ones((2*Nx, 1)); #put in a lot of points in eps_r\n",
    "border = int(2*Nx*fill_factor);\n",
    "eps_r[0:border] = n_ridge**2;\n",
    "\n",
    "\n",
    "fft_fourier_array = grating_fft(eps_r);\n",
    "x = np.linspace(-lattice_constant,lattice_constant,2*Nx);\n",
    "period = lattice_constant;\n",
    "fft_reconstruct = fourier_reconstruction_general(x, period, num_ord, fft_fourier_array);\n",
    "\n",
    "fourier_array_analytic = grating_fourier_array(Nx, fill_factor, n_ridge, -n_groove);\n",
    "analytic_reconstruct = fourier_reconstruction(x, period, num_ord, n_ridge, -n_groove, fill_factor)\n",
    "\n",
    "\n",
    "plt.figure();\n",
    "plt.plot(np.abs(fft_fourier_array[Nx-20:Nx+20]), linewidth=2)\n",
    "plt.plot(np.abs(fourier_array_analytic[Nx-20:Nx+20]));\n",
    "plt.legend(('fft', 'analytic'))\n",
    "plt.show()\n",
    "\n",
    "plt.figure();\n",
    "plt.plot(x,fft_reconstruct)\n",
    "plt.plot(x,analytic_reconstruct);\n",
    "plt.legend(['fft', 'analytic'])\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(21, 21)\n",
      "(21, 21)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "##construct convolution matrix\n",
    "E = np.zeros((2 * num_ord + 1, 2 * num_ord + 1)); E = E.astype('complex')\n",
    "p0 = Nx; #int(Nx/2);\n",
    "p_index = np.arange(-num_ord, num_ord + 1);\n",
    "q_index = np.arange(-num_ord, num_ord + 1);\n",
    "fourier_array = fft_fourier_array;#fourier_array_analytic;\n",
    "detected_pffts = np.zeros_like(E);\n",
    "for prow in range(2 * num_ord + 1):\n",
    "    # first term locates z plane, 2nd locates y coumn, prow locates x\n",
    "    row_index = p_index[prow];\n",
    "    for pcol in range(2 * num_ord + 1):\n",
    "        pfft = p_index[prow] - p_index[pcol];\n",
    "        detected_pffts[prow, pcol] = pfft;\n",
    "        E[prow, pcol] = fourier_array[p0 + pfft];  # fill conv matrix from top left to top right\n",
    "\n",
    "## FFT of 1/e;\n",
    "inv_fft_fourier_array = grating_fft(1/eps_r);\n",
    "##construct convolution matrix\n",
    "E_conv_inv = np.zeros((2 * num_ord + 1, 2 * num_ord + 1));\n",
    "E_conv_inv = E_conv_inv.astype('complex')\n",
    "p0 = Nx;\n",
    "p_index = np.arange(-num_ord, num_ord + 1);\n",
    "for prow in range(2 * num_ord + 1):\n",
    "    # first term locates z plane, 2nd locates y coumn, prow locates x\n",
    "    for pcol in range(2 * num_ord + 1):\n",
    "        pfft = p_index[prow] - p_index[pcol];\n",
    "        E_conv_inv[prow, pcol] = inv_fft_fourier_array[p0 + pfft];  # fill conv matrix from top left to top right\n",
    "\n",
    "print(E_conv_inv.shape);\n",
    "print(E.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Observations to note\n",
    "We can see that floating point precision can completely alter the sign when we take a square root of the beigenvals."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wavelength: 0.5\n",
      "conditioning of AO: 807\n",
      "wavelength: 0.5181818181818182\n",
      "conditioning of AO: 594\n",
      "wavelength: 0.5363636363636364\n",
      "conditioning of AO: 496\n",
      "wavelength: 0.5545454545454546\n",
      "conditioning of AO: 605\n",
      "wavelength: 0.5727272727272728\n",
      "conditioning of AO: 755\n",
      "wavelength: 0.5909090909090909\n",
      "conditioning of AO: 973\n",
      "wavelength: 0.6090909090909091\n",
      "conditioning of AO: 1321\n",
      "wavelength: 0.6272727272727272\n",
      "conditioning of AO: 1963\n",
      "wavelength: 0.6454545454545455\n",
      "conditioning of AO: 3539\n",
      "wavelength: 0.6636363636363636\n",
      "conditioning of AO: 13460\n",
      "wavelength: 0.6818181818181819\n",
      "conditioning of AO: 8517\n",
      "wavelength: 0.7\n",
      "conditioning of AO: 3397\n",
      "wavelength: 0.7181818181818181\n",
      "conditioning of AO: 2184\n",
      "wavelength: 0.7363636363636363\n",
      "conditioning of AO: 1640\n",
      "wavelength: 0.7545454545454545\n",
      "conditioning of AO: 1333\n",
      "wavelength: 0.7727272727272727\n",
      "conditioning of AO: 1135\n",
      "wavelength: 0.7909090909090909\n",
      "conditioning of AO: 997\n",
      "wavelength: 0.8090909090909091\n",
      "conditioning of AO: 895\n",
      "wavelength: 0.8272727272727273\n",
      "conditioning of AO: 817\n",
      "wavelength: 0.8454545454545455\n",
      "conditioning of AO: 871\n",
      "wavelength: 0.8636363636363636\n",
      "conditioning of AO: 948\n",
      "wavelength: 0.8818181818181818\n",
      "conditioning of AO: 1034\n",
      "wavelength: 0.8999999999999999\n",
      "conditioning of AO: 1131\n",
      "wavelength: 0.9181818181818182\n",
      "conditioning of AO: 1240\n",
      "wavelength: 0.9363636363636363\n",
      "conditioning of AO: 1364\n",
      "wavelength: 0.9545454545454546\n",
      "conditioning of AO: 1505\n",
      "wavelength: 0.9727272727272727\n",
      "conditioning of AO: 1669\n",
      "wavelength: 0.990909090909091\n",
      "conditioning of AO: 1860\n",
      "wavelength: 1.009090909090909\n",
      "conditioning of AO: 2087\n",
      "wavelength: 1.0272727272727273\n",
      "conditioning of AO: 2358\n",
      "wavelength: 1.0454545454545454\n",
      "conditioning of AO: 2691\n",
      "wavelength: 1.0636363636363635\n",
      "conditioning of AO: 3106\n",
      "wavelength: 1.0818181818181818\n",
      "conditioning of AO: 3639\n",
      "wavelength: 1.1\n",
      "conditioning of AO: 4349\n",
      "wavelength: 1.1181818181818182\n",
      "conditioning of AO: 5341\n",
      "wavelength: 1.1363636363636362\n",
      "conditioning of AO: 6822\n",
      "wavelength: 1.1545454545454545\n",
      "conditioning of AO: 9274\n",
      "wavelength: 1.1727272727272728\n",
      "conditioning of AO: 14109\n",
      "wavelength: 1.190909090909091\n",
      "conditioning of AO: 28083\n",
      "wavelength: 1.209090909090909\n",
      "conditioning of AO: 520422\n",
      "wavelength: 1.2272727272727273\n",
      "conditioning of AO: 33029\n",
      "wavelength: 1.2454545454545454\n",
      "conditioning of AO: 16374\n",
      "wavelength: 1.2636363636363637\n",
      "conditioning of AO: 11043\n",
      "wavelength: 1.2818181818181817\n",
      "conditioning of AO: 8419\n",
      "wavelength: 1.2999999999999998\n",
      "conditioning of AO: 6857\n",
      "wavelength: 1.3181818181818181\n",
      "conditioning of AO: 5822\n",
      "wavelength: 1.3363636363636364\n",
      "conditioning of AO: 5085\n",
      "wavelength: 1.3545454545454545\n",
      "conditioning of AO: 4534\n",
      "wavelength: 1.3727272727272726\n",
      "conditioning of AO: 4107\n",
      "wavelength: 1.3909090909090909\n",
      "conditioning of AO: 3766\n",
      "wavelength: 1.4090909090909092\n",
      "conditioning of AO: 3487\n",
      "wavelength: 1.4272727272727272\n",
      "conditioning of AO: 3256\n",
      "wavelength: 1.4454545454545453\n",
      "conditioning of AO: 3060\n",
      "wavelength: 1.4636363636363636\n",
      "conditioning of AO: 2893\n",
      "wavelength: 1.481818181818182\n",
      "conditioning of AO: 2748\n",
      "wavelength: 1.5\n",
      "conditioning of AO: 2621\n",
      "wavelength: 1.518181818181818\n",
      "conditioning of AO: 2510\n",
      "wavelength: 1.5363636363636364\n",
      "conditioning of AO: 2411\n",
      "wavelength: 1.5545454545454545\n",
      "conditioning of AO: 2323\n",
      "wavelength: 1.5727272727272728\n",
      "conditioning of AO: 2244\n",
      "wavelength: 1.5909090909090908\n",
      "conditioning of AO: 2172\n",
      "wavelength: 1.6090909090909091\n",
      "conditioning of AO: 2107\n",
      "wavelength: 1.6272727272727272\n",
      "conditioning of AO: 2048\n",
      "wavelength: 1.6454545454545455\n",
      "conditioning of AO: 1993\n",
      "wavelength: 1.6636363636363636\n",
      "conditioning of AO: 1944\n",
      "wavelength: 1.6818181818181817\n",
      "conditioning of AO: 1898\n",
      "wavelength: 1.7\n",
      "conditioning of AO: 1855\n",
      "wavelength: 1.718181818181818\n",
      "conditioning of AO: 1845\n",
      "wavelength: 1.7363636363636363\n",
      "conditioning of AO: 1884\n",
      "wavelength: 1.7545454545454544\n",
      "conditioning of AO: 1924\n",
      "wavelength: 1.7727272727272727\n",
      "conditioning of AO: 1964\n",
      "wavelength: 1.7909090909090908\n",
      "conditioning of AO: 2005\n",
      "wavelength: 1.809090909090909\n",
      "conditioning of AO: 2046\n",
      "wavelength: 1.8272727272727272\n",
      "conditioning of AO: 2087\n",
      "wavelength: 1.8454545454545455\n",
      "conditioning of AO: 2129\n",
      "wavelength: 1.8636363636363635\n",
      "conditioning of AO: 2171\n",
      "wavelength: 1.8818181818181818\n",
      "conditioning of AO: 2213\n",
      "wavelength: 1.9\n",
      "conditioning of AO: 2256\n",
      "wavelength: 1.9181818181818182\n",
      "conditioning of AO: 2300\n",
      "wavelength: 1.9363636363636363\n",
      "conditioning of AO: 2344\n",
      "wavelength: 1.9545454545454546\n",
      "conditioning of AO: 2388\n",
      "wavelength: 1.9727272727272727\n",
      "conditioning of AO: 2433\n",
      "wavelength: 1.9909090909090907\n",
      "conditioning of AO: 2478\n",
      "wavelength: 2.009090909090909\n",
      "conditioning of AO: 2523\n",
      "wavelength: 2.0272727272727273\n",
      "conditioning of AO: 2569\n",
      "wavelength: 2.0454545454545454\n",
      "conditioning of AO: 2615\n",
      "wavelength: 2.0636363636363635\n",
      "conditioning of AO: 2662\n",
      "wavelength: 2.081818181818182\n",
      "conditioning of AO: 2709\n",
      "wavelength: 2.0999999999999996\n",
      "conditioning of AO: 2757\n",
      "wavelength: 2.118181818181818\n",
      "conditioning of AO: 2805\n",
      "wavelength: 2.1363636363636362\n",
      "conditioning of AO: 2853\n",
      "wavelength: 2.1545454545454543\n",
      "conditioning of AO: 2902\n",
      "wavelength: 2.172727272727273\n",
      "conditioning of AO: 2951\n",
      "wavelength: 2.190909090909091\n",
      "conditioning of AO: 3001\n",
      "wavelength: 2.209090909090909\n",
      "conditioning of AO: 3051\n",
      "wavelength: 2.2272727272727275\n",
      "conditioning of AO: 3101\n",
      "wavelength: 2.245454545454545\n",
      "conditioning of AO: 3152\n",
      "wavelength: 2.2636363636363637\n",
      "conditioning of AO: 3204\n",
      "wavelength: 2.2818181818181817\n",
      "conditioning of AO: 3255\n",
      "wavelength: 2.3\n",
      "conditioning of AO: 3307\n"
     ]
    }
   ],
   "source": [
    "## IMPORTANT TO NOTE: the indices for everything beyond this points are indexed from -num_ord to num_ord+1\n",
    "\n",
    "## alternate construction of 1D convolution matrix\n",
    "zeros = np.zeros((PQ, PQ))\n",
    "\n",
    "I = np.eye(2 * num_ord + 1)\n",
    "## simulation parameters\n",
    "theta = (0)*np.pi/180;\n",
    "spectra = list();\n",
    "spectra_T = list();\n",
    "\n",
    "wavelength_scan = np.linspace(0.5,2.3,100)\n",
    "## construct permittivity harmonic components E\n",
    "#fill factor = 0 is complete dielectric, 1 is air\n",
    "\n",
    "# E is now the convolution of fourier amplitudes\n",
    "for wvlen in wavelength_scan:\n",
    "    j = cmath.sqrt(-1);\n",
    "    lam0 = wvlen;     k0 = 2 * np.pi / lam0; #free space wavelength in SI units\n",
    "    print('wavelength: ' + str(wvlen));\n",
    "    ## =====================STRUCTURE======================##\n",
    "\n",
    "    ## Region I: reflected region (half space)\n",
    "    n1 = 1;#cmath.sqrt(-1)*1e-12; #apparently small complex perturbations are bad in Region 1, these shouldn't be necessary\n",
    "\n",
    "    ## Region 2; transmitted region\n",
    "    n2 = 1;\n",
    "\n",
    "    #from the kx_components given the indices and wvln\n",
    "    kx_array = k0*(n1*np.sin(theta) + indices*(lam0 / lattice_constant)); #0 is one of them, k0*lam0 = 2*pi\n",
    "    k_xi = kx_array;\n",
    "    ## IMPLEMENT SCALING: these are the fourier orders of the x-direction decomposition.\n",
    "    KX = np.diag((k_xi/k0)); #singular since we have a n=0, m= 0 order and incidence is normal\n",
    "\n",
    "    ## construct matrix of Gamma^2 ('constant' term in ODE):\n",
    "    B = (KX@bslash(E, KX) - I); #conditioning of this matrix is not bad, A SHOULD BE SYMMETRIC\n",
    "\n",
    "    AO = np.block([[zeros, np.linalg.inv(E_conv_inv)],[B, zeros]])\n",
    "    beigenvals, bigW = LA.eig(AO);\n",
    "    print('conditioning of AO: %d'%np.linalg.cond(AO))\n",
    "#     print('conditioning of big block: '+str(np.linalg.cond(AO)))\n",
    "    #try rounding...\n",
    "    rounded_beigenvals = np.array([round(i,10) for i in beigenvals])\n",
    "    #print(rounded_beigenvals)\n",
    "#     quadrant_sort = [1 if np.real(i)>=0 and np.imag(i)>=0 else 0 for i in rounded_beigenvals];\n",
    "#     sorted_indices = np.nonzero(quadrant_sort)[0]\n",
    "#     print(len(sorted_indices))\n",
    "    sorted_eigs, sorted_indices =nonHermitianEigenSorter(rounded_beigenvals)\n",
    "#     print(sorted_indices)\n",
    "#     print(len(sorted_indices))\n",
    "    sorted_eigenmodes = bigW[:,sorted_indices];\n",
    "    #print(sorted_eigenmodes)\n",
    "    #adding real and imaginary parts seems to work...\n",
    "    sorted_eigenvals = beigenvals[sorted_indices]\n",
    "    \n",
    "    \n",
    "    Wp = sorted_eigenmodes[0:PQ:,0:PQ]\n",
    "    eigenvals_wp = (sorted_eigenvals[0:PQ]);    \n",
    "\n",
    "    eigenvals, W = LA.eig(np.linalg.inv(E_conv_inv)@B);\n",
    "    #print(rounded_beigenvals)\n",
    "    #print('big: '+str(eigenvals_wp))\n",
    "    #print(np.sqrt(eigenvals))\n",
    "    W = Wp;\n",
    "    #we should be gauranteed that all eigenvals are REAL\n",
    "    #eigenvals = eigenvals.astype('complex');\n",
    "    Q = np.diag(eigenvals_wp); #Q should only be positive square root of eigenvals\n",
    "    #Q = np.diag(np.sqrt(eigenvals))\n",
    "    V = E_conv_inv@(W@Q); #H modes\n",
    "\n",
    "#     plt.subplot(141)\n",
    "#     plt.plot(np.real(beigenvals), np.imag(beigenvals), '.'); plt.title('1st'); plt.ylim([-4,4])\n",
    "#     plt.subplot(142)\n",
    "#     plt.plot(np.real(eigenvals_wp), (np.imag(eigenvals_wp)), '.r', markersize = 10)\n",
    "#     plt.plot(np.real(np.sqrt(eigenvals)), (np.imag(np.sqrt(eigenvals))), '.g', markersize = 5)\n",
    "\n",
    "#     plt.ylim([-4,4])\n",
    "#     plt.subplot(143);\n",
    "#     plt.plot(np.real(beigenvals**2), np.imag(beigenvals**2), 'x');\n",
    "#     plt.plot(np.real(eigenvals), np.imag(eigenvals), '.'); plt.title('2nd')\n",
    "\n",
    "#     plt.ylim([-4,4])\n",
    "#     plt.subplot(144)\n",
    "#     plt.plot(np.real(np.sqrt(beigenvals**2)), np.imag(np.sqrt(beigenvals**2)), 'x');\n",
    "\n",
    "#     plt.plot(np.real(np.sqrt(eigenvals)), np.imag(np.sqrt(eigenvals)), '.g'); plt.title('sqrt 2nd')\n",
    "#     plt.ylim([-4,4])\n",
    "#     plt.show();\n",
    "    \n",
    "    ## this is the great typo which has killed us all this time\n",
    "    X = np.diag(np.exp(-k0*np.diag(Q)*d)); #this is poorly conditioned because exponentiation\n",
    "    ## pointwise exponentiation vs exponentiating a matrix\n",
    "\n",
    "    ## observation: almost everything beyond this point is worse conditioned\n",
    "    k_I = k0**2*(n1**2 - (k_xi/k0)**2);                 #k_z in reflected region k_I,zi\n",
    "    k_II = k0**2*(n2**2 - (k_xi/k0)**2);   #k_z in transmitted region\n",
    "    k_I = k_I.astype('complex'); k_I = np.sqrt(k_I);\n",
    "    k_II = k_II.astype('complex'); k_II = np.sqrt(k_II);\n",
    "    Z_I = np.diag(k_I / (n1**2 * k0 ));\n",
    "    Z_II = np.diag(k_II /(n2**2 * k0));\n",
    "    delta_i0 = np.zeros((len(kx_array),1));\n",
    "    delta_i0[num_ord] = 1;\n",
    "    n_delta_i0 = delta_i0*j*np.cos(theta)/n1;\n",
    "\n",
    "    ## design auxiliary variables: SEE derivation in notebooks: RCWA_note.ipynb\n",
    "    # we want to design the computation to avoid operating with X, particularly with inverses\n",
    "    # since X is the worst conditioned thing\n",
    "\n",
    "    O = np.block([\n",
    "        [W, W],\n",
    "        [V,-V]\n",
    "    ]); #this is much better conditioned than S..\n",
    "    f = I;\n",
    "    g = j * Z_II; #all matrices\n",
    "    fg = np.concatenate((f,g),axis = 0)\n",
    "    ab = np.matmul(np.linalg.inv(O),fg);\n",
    "    a = ab[0:PQ,:];\n",
    "    b = ab[PQ:,:];\n",
    "\n",
    "    term = X @ a @ np.linalg.inv(b) @ X;\n",
    "    f = W @ (I+term);\n",
    "    g = V@(-I+term);\n",
    "    T = np.linalg.inv(np.matmul(j*Z_I, f) + g);\n",
    "    T = np.dot(T, (np.dot(j*Z_I, delta_i0) + n_delta_i0));\n",
    "    R = np.dot(f,T)-delta_i0; #shouldn't change\n",
    "    T = np.dot(np.matmul(np.linalg.inv(b),X),T)\n",
    "\n",
    "    ## calculate diffraction efficiencies\n",
    "    #I would expect this number to be real...\n",
    "    DE_ri = R*np.conj(R)*np.real(np.expand_dims(k_I,1))/(k0*n1*np.cos(theta));\n",
    "    DE_ti = T*np.conj(T)*np.real(np.expand_dims(k_II,1)/n2**2)/(k0*np.cos(theta)/n1);\n",
    "\n",
    "    #print(np.sum(DE_ri))\n",
    "    spectra.append(np.sum(DE_ri)); #spectra_T.append(T);\n",
    "    spectra_T.append(np.sum(DE_ti))\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "spectra = np.array(spectra);\n",
    "spectra_T = np.array(spectra_T)\n",
    "plt.figure();\n",
    "plt.plot(wavelength_scan, spectra);\n",
    "plt.plot(wavelength_scan, spectra_T)\n",
    "plt.plot(wavelength_scan, spectra+spectra_T)\n",
    "# plt.legend(['reflection', 'transmission'])\n",
    "# plt.axhline(((3.48-1)/(3.48+1))**2,xmin=0, xmax = max(wavelength_scan))\n",
    "# plt.axhline(((3.48-1)/(3.48+1)),xmin=0, xmax = max(wavelength_scan), color='r')\n",
    "#\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f8fa801c550>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(spectra)\n",
    "plt.plot(spectra_T)\n",
    "plt.plot(np.array(spectra)+np.array(spectra_T))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
